package com.xuelang.pipeline.client.pipeline.utils;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

/**
 * <p>日期时间工具类</p>
 *
 * @author : yixin.lys
 * @date : 2024-06-13 10:43
 **/
public class DateTimeUtils {

    /**
     * 判断给定的日期时间字符串是否大于当前时间
     *
     * @param dateTimeStr 日期时间字符串
     * @param format 日期时间格式
     * @param durationInMinutes 判断是否大于当前时间的额外分钟数
     * @return true 如果给定的日期时间大于当前时间加上durationInMinutes，否则为 false
     */
    public static boolean isDateTimeAfterNow(String dateTimeStr, String format, long durationInMinutes) {
        try {
            // 创建日期时间格式器
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);

            // 解析给定的日期时间字符串
            LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, formatter);

            // 获取当前时间
            LocalDateTime now = LocalDateTime.now();

            // 计算未来的时间
            LocalDateTime futureTime = now.plusMinutes(durationInMinutes);

            // 比较日期时间
            return dateTime.isAfter(futureTime);
        } catch (DateTimeParseException e) {
            // 如果解析失败，打印错误信息
            System.err.println("Invalid date time format: " + e.getMessage());
            return false;
        }
    }

    public static void main(String[] args) {
        String dateTimeStr = "2024-06-12 15:30:00";
        String format = "yyyy-MM-dd HH:mm:ss";
        long durationInMinutes = 30;

        boolean result = isDateTimeAfterNow(dateTimeStr, format, durationInMinutes);
        System.out.println("Is the date time after now + " + durationInMinutes + " minutes? " + result);
    }

}
